Skip to main content

Apa Saja Tipe Data yang Tersedia?

Setelah tahu cara mendeklarasikan variabel dan konstanta, sekarang kita lihat tipe data apa saja yang bisa dipakai. Yuk bedah satu per satu.

Unsigned Integer Types

Berikut tipe bilangan bulat tanpa tanda (non-negatif) di Move:

  1. u8: rentang 0..2^8 - 1 (0–255)
  2. u16: 0..2^16 - 1
  3. u32: 0..2^32 - 1
  4. u64: 0..2^64 - 1
  5. u128: 0..2^128 - 1
  6. u256: 0..2^256 - 1

Contoh pemakaian:

let a : u8 = 100;
let b : u64;
b = 300;

Contoh di dalam module:

module examples::integers {

public struct ExampleObject has key {
id: UID,
a: u8,
b: u16,
}

fun init(a: u8, b: u16, ctx: &mut TxContext) {
let object = ExampleObject {
id: object::new(ctx),
a: a,
b: b,
};
}
}

Boolean

Tipe bool memiliki dua nilai: true dan false.

let a = true;
let b : bool; b = false;
let c : bool = true;

Contoh:

module examples::boolean {

public struct ExampleObject has key {
id: UID,
a: u8,
flag: bool,
}

fun init(a: u8, flag: bool, ctx: &mut TxContext) {
let object = ExampleObject {
id: object::new(ctx),
a: a,
flag: flag,
};
}
}

Vector

vector<T> mirip array dinamis. Import std::vector lalu deklarasikan.

module examples::vectors {
use std::vector;

let v = vector::empty<u8>();
}

Penggunaan umum: vector<u8> (deretan byte) sering dipakai untuk representasi string mentah sebelum dikonversi.

String

Perlu import std::string dan tipe String.

module examples::strings {
use std::string::{Self, String};

public struct ExampleObject has key {
id: UID,
name: String,
}

fun init(name_bytes: vector<u8>, ctx: &mut TxContext) {
let object = ExampleObject {
id: object::new(ctx),
name: string::utf8(name_bytes),
};
}
}

Kita melakukan konversi vector<u8> menjadi String dengan string::utf8().

Address

Alamat ditulis dengan prefiks @.

let addr = @0x2;

Bentuk penulisan singkat dan panjang:

  1. @0x10x00000000000000000000000000000001
  2. @0x420x00000000000000000000000000000042
  3. @0xDEADBEEF0x000000000000000000000000DEADBEEF
  4. @0x0000000000000000000000000000000A (bentuk penuh)
  5. @std menunjuk alamat untuk std

Untuk field atau parameter gunakan tipe address:

module examples::address {

public struct ExampleObject has key {
id: UID,
addr: address,
}

fun init(add: address, ctx: &mut TxContext) {
let object = ExampleObject {
id: object::new(ctx),
addr: add,
};
}
}

Tantangan Kecil

Buat module dengan object Person yang punya field: name, city, age, date_of_birth. Lalu buat conpublic structor yang menginisialisasi satu instance Person.

Penutup

Coba jalankan contoh: buat module examples lalu variasikan sub–kode untuk integers, strings, vectors, dan address. Lalu bangun dengan sui move build. Jika ada error, coba perbaiki.

Integer, boolean, string, vector, dan address adalah tipe dasar yang paling sering dipakai. Selanjutnya kita masuk ke control flow dan cara memakai tipe-tipe ini dalam logika program.